package bookInsert

import (
	"log"

	"smartconn.cc/liugen/input"
	"smartconn.cc/tosone/ra_main/PFSE"
	"smartconn.cc/tosone/ra_main/common"
	"smartconn.cc/tosone/ra_main/coreEvent"
	"smartconn.cc/tosone/ra_main/store"
	"smartconn.cc/tosone/ra_main/taskMgr"
)

// Init 插上书和拔下书的一些操作
func Init() {
	// 插上书需要将其他所有资源释放，然后初始化一些读书需要的资源
	input.GetSwitch("insert").OnSwitchOn(func() {
		log.Println("Clean searchengine pages.")
		PFSE.RemoveAllFeatures()
		log.Println("Success clean searchengine pages.")

		log.Println("Stop sync story.")
		var channel chan bool
		taskMgr.Transport("syncStory", common.ServiceCommand{Cmd: "stop", Channel: channel}) // 停止同步故事
		<-channel
		log.Println("Success stop sync story.")

		// 将所有的封面放到 searchengine 中
		log.Println("Add features to searchengine.")
		for _, cover := range store.GetBookCovers() {
			PFSE.AddFeature(cover)
		}
		log.Println("Success add features to searchengine.")

		log.Println("RA: Book is here, now reading.")
		coreEvent.BookStart()
	})
	// 拔下书需要将读书的时候的资源释放，然后开始一些同步或者其他与读书互斥的任务
	input.GetSwitch("insert").OnSwitchOff(func() {
		log.Println("RA: Book is not here.")
		coreEvent.BookStop()

		// 移除所有的 searchengine 中的 pages
		log.Println("Clean searchengine pages.")
		PFSE.RemoveAllFeatures()
		log.Println("Success clean searchengine pages.")
	})
}
